home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 12 / Amiga Plus Sonderheft Amiga 12.iso / pd / spiele / klondike_adptools / install / datas / english.lha / 2-ScalePics.adpro < prev    next >
Text File  |  1997-06-24  |  9KB  |  407 lines

  1. /*
  2. ** ScalePics.adpro :
  3. **
  4. **  This ARexx script for ADPro v2.5 or higher,
  5. **  scales selected pictures to 86x128 pixels and save them to IFF ILBM 24 bits.
  6. **
  7. **  Klondike & Reko Tools © Copyright Reko Productions - All Rights Reserved.
  8. **
  9. ** $VER: ScaleCards/English v2.0 (16.06.97) Copyright © 1995-97 Lejardinier Olivier - All Rights Reserved
  10. **
  11. */
  12.  
  13. /*
  14. ** ARexx Initializations.
  15. */
  16.  
  17.  ADDRESS "ADPro"
  18.  OPTIONS RESULTS
  19.  ReturnCode = 0
  20.  
  21. /*
  22. ** Constants Initializations.
  23. */
  24.  
  25.  NL = '0A'X
  26.  DNL = NL || NL
  27.  FALSE = 0
  28.  TRUE = 1
  29.  
  30. /*
  31. ** Strings initializations.
  32. */
  33.  
  34.  TITLE_Error = "Error :"
  35.  TITLE_Confirm = "Confirm :"
  36.  
  37.  TITLE_SelectPictures = "Select some pictures to scale :"
  38.  TITLE_SelectDestination = "Select scaled pictures destination :"
  39.  TITLE_ScaledPicsBaseName = "Scaled pictures base name :"
  40.  TITLE_StartFileExtensionAt = "Start file extension at :"
  41.  
  42.  MSG_Abort = "Abort ?"
  43.  MSG_ErrorCode = "Error code ="
  44.  MSG_ADProResult = "ADPro result ="
  45.  
  46.  MSG_UnableToSaveADProPrefs = "Unable to save ADPro prefs."
  47.  MSG_UnableToRestoreADProPrefs = "Unable to restore ADPro prefs."
  48.  
  49.  MSG_UnableToLoadPicture = "Unable to load picture :"
  50.  MSG_UnableToScalePicture = "Unable to scale picture :"
  51.  MSG_UnableToSavePicture = "Unable to save picture :"
  52.  
  53.  MSG_ProcessingPicture = "Processing"
  54.  MSG_LoadingPicture = "Loading picture"
  55.  MSG_ScalingPicture = "Scaling picture to 86 * 128"
  56.  MSG_SavingPicture = "Saving scaled picture"
  57.  
  58.  GAD_ContinueAbort = "Continue|Abort"
  59.  GAD_RetrySkipAbort = "Retry|Skip|Abort"
  60.  
  61. /*
  62. ** Save the current ADPro environment.
  63. */
  64.  
  65.  TempDefaults = "T:TempADProDefaults"
  66.  
  67.  SAVE_DEFAULTS '"'TempDefaults'"'
  68.  IF ( RC ~= 0 ) THEN
  69.   DO
  70.    Text = MSG_UnableToSaveADProPrefs || ADProResult()
  71.    OKAY1 '"'Text'"'
  72.   END
  73.  
  74. /*
  75. ** Initializations of new ADPro environment.
  76. */
  77.  
  78.  CLOSE_RENDER_SCREEN
  79.  CLEAR_RENDERED
  80.  CLEAR_RAW
  81.  PSTATUS "UNLOCKED"
  82.  DISPLAYMESSAGE '""'
  83.  ADPRO_TO_FRONT
  84.  
  85. /*
  86. ** Get some pictures files to scale.
  87. */
  88.  
  89.  PicsDir = GetPref( "KADPT.PicsDir" )
  90.  
  91.  Continue = FALSE
  92.  DO UNTIL ( Continue = TRUE )
  93.  
  94.   IF ( PicsDir ~= "" ) THEN
  95.    GETFILES '"'TITLE_SelectPictures'"' '"'ParseDir( PicsDir )'"' '""'
  96.   ELSE
  97.    GETFILES '"'TITLE_SelectPictures'"'
  98.  
  99.   IF ( RC ~= 0 ) THEN
  100.    CALL ConfirmAbort
  101.   ELSE
  102.    DO
  103.     PicsList = ADPRO_RESULT
  104.     Continue = TRUE
  105.    END
  106.  
  107.  END
  108.  
  109.  PicFilePath = WORD( PicsList, 1 )
  110.  
  111.  PicsDir = DirPart( PicFilePath )
  112.  
  113.  SetPref( "KADPT.PicsDir", PicsDir )
  114.  
  115. /*
  116. ** Get destination directory for the scaled pics.
  117. */
  118.  
  119.  ScaledPicsDir = GetPref( "KADPT.ScaledPicsDir" )
  120.  IF ( ScaledPicsDir = "" ) THEN
  121.   ScaledPicsDir = PicsDir
  122.  
  123.  Continue = FALSE
  124.  DO UNTIL ( Continue = TRUE )
  125.  
  126.   GETDIR '"'TITLE_SelectDestination'"' '"'ParseDir( ScaledPicsDir )'"'
  127.  
  128.   IF ( RC ~= 0 ) THEN
  129.    CALL ConfirmAbort
  130.   ELSE
  131.    DO
  132.     ScaledPicsDir = ADPRO_RESULT
  133.     Continue = TRUE
  134.    END
  135.  
  136.  END
  137.  
  138.  SetPref( "KADPT.ScaledPicsDir", ScaledPicsDir )
  139.  
  140. /*
  141. ** Select scaled picture base name.
  142. */
  143.  
  144.  ScaledPicsBaseName = GetPref( "KADPT.ScaledPicsBaseName" )
  145.  IF ( ScaledPicsBaseName = "" ) THEN
  146.   ScaledPicsBaseName = DelExt( FilePart( PicFilePath ) )
  147.  
  148.  Continue = FALSE
  149.  DO UNTIL ( Continue = TRUE )
  150.  
  151.   GETSTRING '"'TITLE_ScaledPicsBaseName'"' '"'ScaledPicsBaseName'"'
  152.  
  153.   IF ( RC ~= 0 ) THEN
  154.    CALL ConfirmAbort
  155.   ELSE
  156.    DO
  157.     ScaledPicsBaseName = ADPRO_RESULT
  158.     Continue = TRUE
  159.    END
  160.  END
  161.  
  162.  SetPref( "KADPT.ScaledPicsBaseName", ScaledPicsBaseName )
  163.  
  164. /*
  165. ** Get scaled picture extension filename counter starting.
  166. */
  167.  
  168.  Extension = GetPref( "KADPT.Extension" )
  169.  IF ( Extension = "" ) THEN
  170.   Extension = 1
  171.  
  172.  NbPics = WORDS( PicsList )
  173.  
  174.  Continue = FALSE
  175.  DO UNTIL ( Continue = TRUE )
  176.   GETNUMBER '"'TITLE_StartFileExtensionAt'"' Extension 1 999-NbPics
  177.   IF ( RC ~= 0 ) THEN
  178.    CALL ConfirmAbort
  179.   ELSE
  180.    DO
  181.     Extension = ADPRO_RESULT
  182.     Continue = TRUE
  183.    END
  184.  END
  185.  
  186. /*
  187. ** Load, scale & save files to IFF ILBM 24 bits.
  188. */
  189.  
  190.  LOAD_TYPE "REPLACE"
  191.  
  192.  DO Index = 1 TO NbPics
  193.  
  194.   PicPath = WORD( PicsList, Index )
  195.   
  196.   ScaledPicName = AddExt( ScaledPicsBaseName, RIGHT( Extension, 3, '0' ) )
  197.  
  198.   Processing = MSG_ProcessingPicture ScaledPicName ":"
  199.   
  200.   Continue = FALSE
  201.   DO UNTIL ( Continue = TRUE )
  202.   
  203.    Text = Processing MSG_LoadingPicture FilePart( PicPath )
  204.    DISPLAYMESSAGE '"'Text'"'
  205.  
  206.    LOADER "UNIVERSAL" PicPath
  207.  
  208.    IF ( RC ~= 0 ) THEN
  209.     DO
  210.      IF ( ADPRO_RESULT = "Aborted" ) THEN
  211.       CALL ConfirmAbort
  212.      ELSE
  213.       DO
  214.        Text = MSG_UnableToLoadPicture || DNL || ParseString( PicPath ) || ADProResult()
  215.        OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetrySkipAbort'"'
  216.        IF ( RC = 0 ) THEN
  217.         CALL ConfirmAbort
  218.        ELSE
  219.         IF ( RC = 2 ) THEN
  220.          Continue = TRUE
  221.       END
  222.     END
  223.    ELSE
  224.     DO
  225.      Text = Processing MSG_ScalingPicture
  226.      DISPLAYMESSAGE '"'Text'"'
  227.  
  228.      ABS_SCALE 86 128
  229.  
  230.      IF ( RC ~= 0 ) THEN
  231.       IF ( ADPRO_RESULT = "Aborted" ) THEN
  232.        DO
  233.         CALL ConfirmAbort
  234.        END
  235.       ELSE
  236.        DO
  237.         Text = MSG_UnableToScalePicture || DNL || ParseString( PicPath ) || ADProResult()
  238.         OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetrySkipAbort'"'
  239.         IF ( RC = 0 ) THEN
  240.          CALL ConfirmAbort
  241.         ELSE
  242.          IF ( RC = 2 ) THEN
  243.           Continue = TRUE
  244.        END
  245.      ELSE
  246.       DO
  247.        ScaledPicPath = AddPart( ScaledPicsDir, ScaledPicName )
  248.  
  249.        Text = Processing MSG_SavingPicture ScaledPicName
  250.        DISPLAYMESSAGE '"'Text'"'
  251.     
  252.        Continue0 = FALSE
  253.        DO UNTIL ( Continue0 = TRUE )
  254.  
  255.         SAVER "IFF" ScaledPicPath "RAW"
  256.  
  257.         IF ( RC ~= 0 ) THEN
  258.          DO
  259.           IF ( ADPRO_RESULT = "Aborted" ) THEN
  260.            CALL ConfirmAbort
  261.           ELSE
  262.            DO
  263.             Text = MSG_UnableToSavePicture || DNL || ParseString( ScaledPicPath ) || ADProResult()
  264.             ADDRESS COMMAND 'C:Delete >NIL: "' || ScaledPicPath || '" QUIET'
  265.             OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetrySkipAbort'"'
  266.             IF ( RC = 0 ) THEN
  267.              CALL ConfirmAbort
  268.             ELSE
  269.              IF ( RC = 2 ) THEN
  270.               DO
  271.                Continue0 = TRUE
  272.                Continue = TRUE
  273.               END
  274.            END
  275.          END
  276.         ELSE
  277.          DO
  278.           Extension = Extension + 1
  279.           Continue0 = TRUE
  280.           Continue = TRUE
  281.          END
  282.        END
  283.       END
  284.     END
  285.   END
  286.  END
  287.  
  288.  SetPref( "KADPT.Extension", Extension )
  289.  
  290. /*
  291. ** Quit.
  292. */
  293.  
  294. Quit:
  295.  
  296.  CLOSE_RENDER_SCREEN
  297.  CLEAR_RENDERED
  298.  CLEAR_RAW
  299.  DISPLAYMESSAGE '""'
  300.  
  301.  IF ( EXISTS( TempDefaults ) ) THEN
  302.   DO
  303.    LOAD_DEFAULTS '"'TempDefaults'"'
  304.    IF ( RC ~= 0 ) THEN
  305.     DO
  306.      Text = MSG_UnableToRestoreADProPrefs || ADProResult()
  307.      OKAY1 '"'Text'"'
  308.     END
  309.    ADDRESS COMMAND 'C:Delete >NIL: FILE="' || TempDefaults || '" QUIET'
  310.   END
  311.  
  312.  EXIT ReturnCode
  313.  
  314. RETURN
  315.  
  316. /*
  317. ** Sub Routines
  318. */
  319.  
  320. ADProResult:
  321.  ADProResultText = DNL || MSG_ErrorCode RC || NL || MSG_ADProResult ADPRO_RESULT
  322. RETURN ADProResultText
  323.  
  324. ConfirmAbort:
  325.  OKAYN '"'TITLE_Confirm'"' '"'MSG_Abort'"' '"'GAD_ContinueAbort'"'
  326.  IF ( RC = 0 ) THEN
  327.   DO
  328.    ReturnCode = 20
  329.    CALL Quit
  330.   END
  331. RETURN
  332.  
  333. ParseString: PROCEDURE
  334.  PARSE ARG String
  335. RETURN STRIP( String, 'B', '"' )
  336.  
  337. ParseDir: PROCEDURE
  338.  PARSE ARG Dir
  339.  Dir = ParseString( Dir )
  340.  Dir = STRIP( Dir, 'T', '/' )
  341. RETURN Dir
  342.  
  343. DirPart: PROCEDURE
  344.  PARSE ARG Path
  345.  Path = ParseString( Path )
  346.  FNameSepPos = LASTPOS( '/', Path )
  347.  IF ( FNameSepPos = 0 ) THEN
  348.   RETURN LEFT( Path, LASTPOS( ':', Path ) )
  349.  ELSE
  350.   RETURN LEFT( Path, FNameSepPos - 1 )
  351.  
  352. FilePart:
  353.  PARSE ARG Path
  354.  Path = ParseString( Path )
  355.  FNameSepPos = LASTPOS( '/', Path )
  356.  IF ( FNameSepPos = 0 ) THEN
  357.   FNameSepPos = LASTPOS( ':', Path )
  358. RETURN RIGHT( Path, LENGTH( Path ) - FNameSepPos )
  359.  
  360. AddPart:
  361.  PARSE ARG Dir, Name
  362.  LastChar = RIGHT( Dir, 1 )
  363.  IF (( LastChar ~= "/" ) & ( LastChar ~= ":" )) THEN
  364.   Dir = Dir || "/"
  365. RETURN Dir || Name
  366.  
  367. AddExt:
  368.  PARSE ARG Name, Ext
  369. RETURN Name || "." || Ext
  370.  
  371. DelExt:
  372.  PARSE ARG Name
  373.  PointPos = LASTPOS( '.', Name )
  374.  if ( PointPos ~= 0 ) THEN
  375.   Name = DELSTR( Name, PointPos )
  376. RETURN Name
  377.  
  378. GetPref: PROCEDURE
  379.  PARSE ARG Name
  380.  
  381.  Pref = GETCLIP( Name )
  382.  IF ( Pref = "" ) THEN
  383.   DO
  384.    IF ( OPEN( FileHandle, AddPart( "ENVARC:Klondike_ADPTools", Name ), "READ" ) ) THEN
  385.     DO
  386.      Pref = READLN( FileHandle )
  387.      Dummy = CLOSE( FileHandle )
  388.     END
  389.   END
  390. RETURN Pref
  391.  
  392. SetPref: PROCEDURE
  393.  PARSE ARG Name, Pref
  394.  
  395.  Dummy = SETCLIP( Name, Pref )
  396.  
  397.  IF ( ~EXISTS( "ENVARC:Klondike_ADPTools" ) ) THEN
  398.   ADDRESS COMMAND 'C:MakeDir >NIL: ENVARC:Klondike_ADPTools'
  399.   
  400.  IF ( OPEN( FileHandle, AddPart( "ENVARC:Klondike_ADPTools", Name ), "WRITE" ) ) THEN
  401.   DO
  402.    Dummy = WRITELN( FileHandle, Pref )
  403.    Dummy = CLOSE( FileHandle )
  404.   END
  405. RETURN Pref
  406.  
  407.